"""
    @Author  ：思念 
    @File    ：2.匹配模式.py
    @Date    ：2024/12/9 21:21 
"""
import re
"""
    匹配模式
        - re.MULTILINE 或 re.M:
          - 多行模式。使 ^ 和 $ 匹配每一行的开始和结束，而不仅仅是整个字符串的开始和结束。
        - re.DOTALL 或 re.S:
          - 让 . 匹配所有字符，包括换行符 \n。
        - re.VERBOSE 或 re.X:
          - 详细模式。允许在正则表达式中加入注释和空白符，使其更易读。
        - re.IGNORECASE 或 re.I:
          - 忽略大小写。例如，a 将匹配 A 和 a。  
        - re.DEBUG:
          - 调试模式。显示编译正则表达式时的调试信息。
        - re.ASCII 或 re.A:
          - ASCII 模式。使 \w, \W, \b, \B, \d, \D, \s, 和 \S 只匹配 ASCII 字符。
"""
content = '''张三，手机号码15945678901
李四，手机号码13945677701
王二，手机号码13845666901'''

# 多行匹配模式
print(re.findall(r'^.*?(\d+)$', content, re.M))
print("-" * 50)

# 多选匹配 |
print(re.findall(r'张三|李四|王二', content))
print("-" * 50)

# 分组匹配 ：() 只保留括号内的内容
print(re.findall(r'(.*?)，.*?(\d+)', content))
print("-" * 50)

# 分组别名 finditer 返回值为 迭代器
for temp in re.finditer(r'(?P<name>.+)，.*?(?P<phone>\d+)', content, re.M):
    print(temp.group('name')+'————'+temp.group('phone'))


html = '''<div class="el">
        <p class="t1">           
            <span>
                <a>Python开发工程师</a>
            </span>
        </p>
        <span class="t2">南京</span>
        <span class="t3">1.5-2万/月</span>
        </div>
        <div class="el">
                <p class="t1">
                    <span>
                        <a>java开发工程师</a>
                    </span>
                </p>
                <span class="t2">苏州</span>
                <span class="t3">1.5-2/月</span>
        </div>
'''

# 通配符匹配任意字符 re.DOTALL 或 re.S
for i in re.findall(r'class="t1">.*?<a>(.*?)</a>', html, re.S):
    print(i)